Quantcast
Channel: Latest Questions on Unity Answers
Viewing all articles
Browse latest Browse all 171066

how i can Directing transform.rotation to direction of movement character ?

$
0
0
This is it death or life for me , plz help me, how i can Directing transform.rotation to direction of movement character ? but the character move on Planet is not a regular , I made ​​a character walks as I want, but do **not rotate with the direction of motion:** this is test_sampel all the code and package unity : [http://www.2shared.com/file/wmQDIK0h/test-sample.html][1]. plz help me, anyone can help? using UnityEngine; using System.Collections; public class walk1 : MonoBehaviour { Vector3 Vertical; Vector3 Horizontal; public float moveSpeed = 0.07f; // move speed public float lerpSpeed = 40f; //smoothing speed public GameObject planet; // target public float desGro = 0.9f; // distance from character position to ground private Vector3 inputTranslationHorizontal = Vector3.zero; private Vector3 inputTranslationVertical = Vector3.zero; private float inputTranslationV = 0.0f; //float GetAxis("Vertical") private float inputTranslationH = 0.0f; //float GetAxis("Horizontal") // Use this for initialization void Awake () { StickOnOurface(); } // Update is called once per frame] void Update () { // Input translation inputTranslationV = Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime; inputTranslationH = Input.GetAxis("Horizontal") * moveSpeed * Time.deltaTime; /* if(inputTranslationV != 0f) { inputTranslationVertical = transform.forward * inputTranslationV; } if(inputTranslationH != 0f) { inputTranslationHorizontal = transform.right * inputTranslationH; } */ if(inputTranslationH != 0f || inputTranslationV != 0f) { inputTranslationVertical = transform.forward * inputTranslationV; inputTranslationHorizontal = transform.right * inputTranslationH; move(inputTranslationHorizontal,inputTranslationVertical); } else StickOnOurface(); } void move (Vector3 horizontal, Vector3 vertical) { Vector3 targetDirection = horizontal + vertical; transform.position += targetDirection.normalized * .07f; // Stick on surface StickOnOurface(); } void StickOnOurface() { RaycastHit hit; if (Physics.Raycast (transform.position , -transform.up, out hit, Mathf.Infinity)) { // Stick on surface transform.position = hit.point + (transform.up * desGro); // Align to surface normal Quaternion fro = Quaternion.FromToRotation(transform.up, hit.normal) * transform.rotation; transform.rotation = Quaternion.RotateTowards(transform.rotation, fro, Time.deltaTime * lerpSpeed); } } } [1]: http://www.2shared.com/file/wmQDIK0h/test-sample.html

Viewing all articles
Browse latest Browse all 171066

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>