- Home /
Question by
wueric0622 · Dec 12, 2013 at 05:39 PM ·
click to move
RTS click to move : through the terrain
var smooth:int;
var gravity:int = 10;
static var grounded:boolean = false;
private var targetPosition:Vector3;
var moveDirection:Vector3 = Vector3.zero;
var speed = 60;
function Update () {
if(grounded == false)
{
moveDirection.y -= gravity * Time.deltaTime;
}
var controller:CharacterController = GetComponent(CharacterController);
var flags = controller.Move(moveDirection * Time.deltaTime);
grounded = (flags & CollisionFlags.Below) != 0;
if(grounded==false)
{
this.transform.position.y -= gravity * Time.deltaTime;
}
if(Input.GetKeyDown(KeyCode.Mouse0))
{
smooth=1;
var playerPlane = new Plane(Vector3.up, transform.position);
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
var hitdist = 0.0;
if (playerPlane.Raycast (ray, hitdist)) {
var targetPoint = ray.GetPoint(hitdist);
targetPosition = ray.GetPoint(hitdist);
var targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
transform.rotation = targetRotation;
}
}
var dir:Vector3 = targetPosition - transform.position;
var dist:float = dir.magnitude;
var move:float = speed * Time.deltaTime;
if(dist > move){
transform.position.x += dir.x* move;
transform.position.z += dir.z* move;
} else {
transform.position.x = targetPosition.x;
transform.position.z = targetPosition.z;
}
}
I make the RTS click to move script and it have gravity function,but when character move on the terrain that have some hills it well pass through the hills and fall. How can i fix it?
Comment
Answer by unity_pq4f9m5BG-5Inw · Feb 24, 2020 at 06:44 AM
Hy @wueric0622 you can use navmesh and navmesh agent to achieve the result. You can follow the video to make a simple click to move which will work everywhere. Find the link below https://www.youtube.com/embed/DPBdqbP8MFI
Your answer
Follow this Question
Related Questions
How to retrieve GameObject's Vector2 coordinate and move another object to it's place 1 Answer
Script Help 3D touch animation 1 Answer
Creating tags via code 3 Answers
(Solved) Continuous movement 1 Answer
Enemy flying issue 1 Answer